package com.you.springcloudconfig.controller;

import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixProperty;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * Created by Linzk on 2020/12
 */
@RestController
// @RefreshScope // 开启刷新功能
@RequestMapping("/client-provider")
public class ConfigClientController {

    // @Value("${name}")
    // private String name; // 获取远程 Gitee 仓库中配置的属性

    /**
     * @HystrixCommand : HystrixProperty[] commandProperties() default {};
     * HystrixProperty[]: 里面只有两个接口方法：String、name
     */
    @HystrixCommand(fallbackMethod = "providerStandby",commandProperties = { // fallbackMethod 指定 降级方法
            @HystrixProperty(name="execution.isolation.thread.timeoutInMilliseconds",value = "3000") // - 设置Hystrix的超时时间，默认1s
    })
    @RequestMapping("/config")
    public String provider() {
        int a = 3 / 0;
        /*try {

            Thread.sleep(2000);
        } catch (Exception e) {
            System.out.println("异常：" + e);
        }*/
        return "provider:";
    }

    // 定义降级方法：1. 方法的返回值需要和原方法一样     2. 方法的参数需要和原方法一样
    public String providerStandby(){ // 提供者备用
        return "provider_fallback  降级了~~~";
    }

}
